/*
 * GeoVISTA Center (Penn State, Dept. of Geography)
 * Copyright (c), 2003-2011,  Jin Chen and Alan M. MacEachren, GeoVISTA Center, Penn State University
 * All Rights Researved.
 *
 * This library is developed and distributed for free usage,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * You can redistribute and/or modify it under the terms of the
 * Simplified BSD License
 *
 *
 *
 *
 *
 *
 *
 *
 * @author: jin Chen 
 * @date: Jun 13, 2003
 * @version: $VERSION$
 */
package edu.psu.geovista.app.plot.layer;

import edu.psu.geovista.app.pcp.plot.gui.BasicPcpUI;
import edu.psu.geovista.app.pcp.plot.layer.ConfigInfo;

import java.awt.*;

public interface Layer {
   //paint mode
   public  static final int PAINT_MODE_SIMPLE =1 ;
   public static final int PAINT_MODE_FULL=2;
  //layer level
  public static final int BOTTOM=0;
  public static final int BELOW_MIDDLE=20;
  public static final int MIDDLE=50;
  public static final int ABOVE_MIDDLE=80;
  public static final int TOP=100;

   /************************ Layers Name ***************************/
    public static final String BACKGROUND_LAYER="bgLyr";
    public static final String AXIS_LAYER="axLyr";
    public static final String BgData_LAYER ="lnLyr"; // background data layer, show all the data as background
    public static final String TopData_LAYER ="DsrLyr";// 
    public static final String DYNAMIC_LAYER="dynLyr";
    public static final String TOP_LAYER="TPL";
    public static final String CACHE_LAYER="cache";
    public static final String TSAXIS_BACKGROUND_LAYER="TsBgLyr";
   /************************ Layers type ***************************/
    public static final int TYPE_BG=0;
    public static final int TYPE_AXIS=1;
    public static final int TYPE_DATA=3;
    public static final int TYPE_DYNAMIC=4;
  /**
   * do some configura
   */
  public void paintLayer();
  public  void clearLayer();
  /*public void deepClearLayer();
  public BufferedImage getImage() ;*/
  //public RenderedImage getScaledImage() ;
 // public void createScaledImage(float sw, float sh);
  public int getLevel();
  public void setLevel(int level) ;
  /*public Dimension getSize() ;
  public void setSize(Dimension size) ;
*/
  public String getName();
  public Composite getComposite();
  public boolean isVisible();
  //public boolean isScaled();
  public int getType();
  public ConfigInfo getConfigInfo();
  public void setAConfigInfo(String name,Object value);
  public BasicPcpUI getUi();
  public boolean isPersisted();
  //control how a layer may looks variously  
  public void setPaintMode(int mode);
 // protected void paintComponent(Graphics g);
}
